using System;
using System.Threading;
using Cysharp.Threading.Tasks;

namespace ZYFramework.ObjectPool
{
    /// <summary>
    /// 对象池化回调接口
    /// 如果进行实现，可以在缓存池操作时，进行相应的回调操作
    /// </summary>
    public interface IPoolable
    {

        /// <summary>
        /// 是否是游戏对象
        /// </summary>
        bool IsGameObject { get; set; }

        /// <summary>
        /// 对象创建时调用
        /// </summary>
        void Create_Sync();

        /// <summary>
        /// 对象从池中获取到之后调用
        /// </summary>
        void Activate_Sync();

        /// <summary>
        /// 对象被回收到池中时调用
        /// </summary>
        void OnRelease_Sync();

        /// <summary>
        /// 对象被销毁时调用
        /// </summary>
        void OnDestroy_Sync();
    }
}
